package com.ruoyi.system.domain;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 商品次卡对象 product_pass_card
 *
 * @author ruoyi
 * @date 2025-05-23
 */
public class ProductPassCard extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 次卡唯一标识符（自增数字ID） */
    private Long id;

    /** 商品次卡名称（如"10次瑜伽体验卡"） */
    @Excel(name = "商品次卡名称")
    private String passCardName;

    /** 商品次卡编号（如"YOGA_PASS_10"） */
    @Excel(name = "商品次卡编号")
    private String passCardCode;

    /** 是否支持预订小程序端购买（1：支持，0：不支持） */
    @Excel(name = "是否支持预订小程序端购买", readConverterExp = "1=：支持，0：不支持")
    private Integer isAvailableInMiniProgram;

    /** 单人购买限制类型 */
    @Excel(name = "单人购买限制类型")
    private String purchaseLimitType;

    /** 单人最多购买张数（当purchase_limit_type为"单人最多购买张数"时生效） */
    @Excel(name = "单人最多购买张数")
    private Long singlePersonMaxPurchase;

    /** 该卡限购总数类型 */
    @Excel(name = "该卡限购总数类型")
    private String totalPurchaseLimitType;

    /** 限购张数（当total_purchase_limit_type为"限购张数"时生效） */
    @Excel(name = "限购张数")
    private Long totalMaxPurchase;

    /** 单笔订单使用张数限制类型 */
    @Excel(name = "单笔订单使用张数限制类型")
    private String singleOrderUseLimitType;

    /** 单次最多可用张数（当single_order_use_limit_type为"单次最多可用张数"时生效） */
    @Excel(name = "单次最多可用张数")
    private Long singleOrderMaxUse;

    /** 每人每天使用张数限制类型 */
    @Excel(name = "每人每天使用张数限制类型")
    private String dailyUseLimitType;

    /** 每天最多可用张数（当daily_use_limit_type为"每天最多可用张数"时生效） */
    @Excel(name = "每天最多可用张数")
    private Long dailyMaxUse;

    /** 小程序显示限购（0：不显示，1：显示） */
    @Excel(name = "小程序显示限购", readConverterExp = "0=：不显示，1：显示")
    private Integer miniProgramDisplayLimit;

    /** 抵扣规则设置（如"高价商品优先"或"低价商品优先"） */
    @Excel(name = "抵扣规则设置")
    private String deductionRule;

    /** 参与商品ID列表（JSON数组，如["PROD001", "PROD002"]） */
    @Excel(name = "参与商品ID列表")
    private String includedProductIds;

    /** 参与商品名称列表（JSON数组，与included_product_ids对应） */
    @Excel(name = "参与商品名称列表", readConverterExp = "J=SON数组，与included_product_ids对应")
    private String includedProductNames;

    /** 参与套餐商品ID列表（JSON数组，如["PKG001", "PKG002"]） */
    @Excel(name = "参与套餐商品ID列表")
    private String includedPackageIds;

    /** 参与套餐商品名称列表（JSON数组，与included_package_ids对应） */
    @Excel(name = "参与套餐商品名称列表", readConverterExp = "J=SON数组，与included_package_ids对应")
    private String includedPackageNames;

    /** 参与配品ID列表（JSON数组，如["ACC001", "ACC002"]） */
    @Excel(name = "参与配品ID列表")
    private String includedAccessoryIds;

    /** 参与配品名称列表（JSON数组，与included_accessory_ids对应） */
    @Excel(name = "参与配品名称列表", readConverterExp = "J=SON数组，与included_accessory_ids对应")
    private String includedAccessoryNames;

    /** 次卡状态 */
    @Excel(name = "次卡状态")
    private String status;

    /** 次卡描述信息（如使用规则、注意事项等） */
    @Excel(name = "次卡描述信息", readConverterExp = "如=使用规则、注意事项等")
    private String description;

    /** 创建人ID（如系统管理员ID） */
    @Excel(name = "创建人ID", readConverterExp = "如=系统管理员ID")
    private String creatorId;

    /** 创建人姓名（如"王五"） */
    @Excel(name = "创建人姓名")
    private String creatorName;

    /** 手机号 */
    @Excel(name = "手机号")
    private String phone;

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }

    public void setPassCardName(String passCardName)
    {
        this.passCardName = passCardName;
    }

    public String getPassCardName()
    {
        return passCardName;
    }

    public void setPassCardCode(String passCardCode)
    {
        this.passCardCode = passCardCode;
    }

    public String getPassCardCode()
    {
        return passCardCode;
    }

    public void setIsAvailableInMiniProgram(Integer isAvailableInMiniProgram)
    {
        this.isAvailableInMiniProgram = isAvailableInMiniProgram;
    }

    public Integer getIsAvailableInMiniProgram()
    {
        return isAvailableInMiniProgram;
    }

    public void setPurchaseLimitType(String purchaseLimitType)
    {
        this.purchaseLimitType = purchaseLimitType;
    }

    public String getPurchaseLimitType()
    {
        return purchaseLimitType;
    }

    public void setSinglePersonMaxPurchase(Long singlePersonMaxPurchase)
    {
        this.singlePersonMaxPurchase = singlePersonMaxPurchase;
    }

    public Long getSinglePersonMaxPurchase()
    {
        return singlePersonMaxPurchase;
    }

    public void setTotalPurchaseLimitType(String totalPurchaseLimitType)
    {
        this.totalPurchaseLimitType = totalPurchaseLimitType;
    }

    public String getTotalPurchaseLimitType()
    {
        return totalPurchaseLimitType;
    }

    public void setTotalMaxPurchase(Long totalMaxPurchase)
    {
        this.totalMaxPurchase = totalMaxPurchase;
    }

    public Long getTotalMaxPurchase()
    {
        return totalMaxPurchase;
    }

    public void setSingleOrderUseLimitType(String singleOrderUseLimitType)
    {
        this.singleOrderUseLimitType = singleOrderUseLimitType;
    }

    public String getSingleOrderUseLimitType()
    {
        return singleOrderUseLimitType;
    }

    public void setSingleOrderMaxUse(Long singleOrderMaxUse)
    {
        this.singleOrderMaxUse = singleOrderMaxUse;
    }

    public Long getSingleOrderMaxUse()
    {
        return singleOrderMaxUse;
    }

    public void setDailyUseLimitType(String dailyUseLimitType)
    {
        this.dailyUseLimitType = dailyUseLimitType;
    }

    public String getDailyUseLimitType()
    {
        return dailyUseLimitType;
    }

    public void setDailyMaxUse(Long dailyMaxUse)
    {
        this.dailyMaxUse = dailyMaxUse;
    }

    public Long getDailyMaxUse()
    {
        return dailyMaxUse;
    }

    public void setMiniProgramDisplayLimit(Integer miniProgramDisplayLimit)
    {
        this.miniProgramDisplayLimit = miniProgramDisplayLimit;
    }

    public Integer getMiniProgramDisplayLimit()
    {
        return miniProgramDisplayLimit;
    }

    public void setDeductionRule(String deductionRule)
    {
        this.deductionRule = deductionRule;
    }

    public String getDeductionRule()
    {
        return deductionRule;
    }

    public void setIncludedProductIds(String includedProductIds)
    {
        this.includedProductIds = includedProductIds;
    }

    public String getIncludedProductIds()
    {
        return includedProductIds;
    }

    public void setIncludedProductNames(String includedProductNames)
    {
        this.includedProductNames = includedProductNames;
    }

    public String getIncludedProductNames()
    {
        return includedProductNames;
    }

    public void setIncludedPackageIds(String includedPackageIds)
    {
        this.includedPackageIds = includedPackageIds;
    }

    public String getIncludedPackageIds()
    {
        return includedPackageIds;
    }

    public void setIncludedPackageNames(String includedPackageNames)
    {
        this.includedPackageNames = includedPackageNames;
    }

    public String getIncludedPackageNames()
    {
        return includedPackageNames;
    }

    public void setIncludedAccessoryIds(String includedAccessoryIds)
    {
        this.includedAccessoryIds = includedAccessoryIds;
    }

    public String getIncludedAccessoryIds()
    {
        return includedAccessoryIds;
    }

    public void setIncludedAccessoryNames(String includedAccessoryNames)
    {
        this.includedAccessoryNames = includedAccessoryNames;
    }

    public String getIncludedAccessoryNames()
    {
        return includedAccessoryNames;
    }

    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getStatus()
    {
        return status;
    }

    public void setDescription(String description)
    {
        this.description = description;
    }

    public String getDescription()
    {
        return description;
    }

    public void setCreatorId(String creatorId)
    {
        this.creatorId = creatorId;
    }

    public String getCreatorId()
    {
        return creatorId;
    }

    public void setCreatorName(String creatorName)
    {
        this.creatorName = creatorName;
    }

    public String getCreatorName()
    {
        return creatorName;
    }

    public void setPhone(String phone)
    {
        this.phone = phone;
    }

    public String getPhone()
    {
        return phone;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("passCardName", getPassCardName())
                .append("passCardCode", getPassCardCode())
                .append("isAvailableInMiniProgram", getIsAvailableInMiniProgram())
                .append("purchaseLimitType", getPurchaseLimitType())
                .append("singlePersonMaxPurchase", getSinglePersonMaxPurchase())
                .append("totalPurchaseLimitType", getTotalPurchaseLimitType())
                .append("totalMaxPurchase", getTotalMaxPurchase())
                .append("singleOrderUseLimitType", getSingleOrderUseLimitType())
                .append("singleOrderMaxUse", getSingleOrderMaxUse())
                .append("dailyUseLimitType", getDailyUseLimitType())
                .append("dailyMaxUse", getDailyMaxUse())
                .append("miniProgramDisplayLimit", getMiniProgramDisplayLimit())
                .append("deductionRule", getDeductionRule())
                .append("includedProductIds", getIncludedProductIds())
                .append("includedProductNames", getIncludedProductNames())
                .append("includedPackageIds", getIncludedPackageIds())
                .append("includedPackageNames", getIncludedPackageNames())
                .append("includedAccessoryIds", getIncludedAccessoryIds())
                .append("includedAccessoryNames", getIncludedAccessoryNames())
                .append("status", getStatus())
                .append("description", getDescription())
                .append("creatorId", getCreatorId())
                .append("creatorName", getCreatorName())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .append("phone", getPhone())
                .toString();
    }
}
